iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
DevOps

從零開始的DevOps猴!系列 第 14

Day14-Docker Image離線備份(Private Registry)

  • 分享至 

  • xImage
  •  

建立私有集運貨櫃船 Docker Registry

上一篇提到Image交付方式(打包成.tar檔),如果是要在私有網路內建立自己的Image管理庫,建立一個Private Registry,這種方法適合多個Image的管理和分發,今天來利用Docker建一個簡易的Registry來玩玩看。

設置本地 Registry:

使用Docker官方提供的Image:Registry來實作

# 尋找 Registry Image
docker search registry

dockerSearchCmd

透過Docker Desktop Search Bar也可以找到

dockerSearchBar

# 運行本地 Registry 容器
docker run -d -p 5000:5000 --name registry registry:2

標記和推送Image到本地 Registry:

# 標記Image
docker tag <image_name>:<tag> localhost:5000/<image_name>:<tag>

# 推送Image
docker push localhost:5000/<image_name>:<tag>

# 例子
docker tag piyeh-redis:latest localhost:5000/piyeh_redis:v1
docker push localhost:5000/piyeh_redis:v1

runRegistry

tagPushRegistry

補充說明

為什麼要先 tag 再上傳至 registry:

Docker 使用 tag 來識別鏡像的來源和目的地。當您推送一個鏡像到 registry 時,Docker 需要知道這個鏡像應該被推送到哪裡。標記過程實際上是在告訴 Docker 兩件事:
a) 這個鏡像應該被推送到哪個 registry
b) 在該 registry 中,這個鏡像應該使用什麼名字和標籤
標記並不會創建新的鏡像,它只是為現有的鏡像創建一個新的引用。

為什麼要使用 localhost:5000:

localhost:5000 這個前綴有特殊的含義:

localhost 表示這個 registry 運行在本地機器上
:5000 是 Docker registry 的默認端口

當您使用 docker push 命令時,Docker 會查看鏡像名稱的第一部分(在斜線之前的部分)來決定推送的目標 registry。如果沒有指定 registry 地址,Docker 默認會嘗試推送到 Docker Hub。
通過添加 localhost:5000,您告訴 Docker:

不要推送到 Docker Hub
而是推送到運行在本地機器 5000 端口上的 registry

檢查本地 Registry Image列表

# PowerShell
Invoke-RestMethod -Uri "http://localhost:5000/v2/_catalog"

ImageList

從本地 Registry 拉取Image:

# 拉取Image
docker pull localhost:5000/<image_name>:<tag>

# 例子
docker pull localhost:5000/piyeh_redis:v1

pullImage

小結

今天學會自架一個Private Registry,加入Volume就能達到資料持久化存儲,大家可以嘗試看看! 如果大一點規模的團隊可能就會需要參考Harbor等等較完整功能的Docker Registry工具。


上一篇
Day13-Docker Image離線備份
下一篇
Day15-Linux 基礎入門-1
系列文
從零開始的DevOps猴!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言